<?php

/**
 * Classe représentant d'une dépense.
 * @author CHAGNON Laura
 * @since 25 septembre 2013
 * @version 1.0
 */

class Depense
{
		/*Attributs*/
	/**
	 * Identifiant de la dépense
	 * @var int
	 */
	private $_id;
	
	/**
	 * Libellé de la dépense
	 * @var string
	 */
	private $_libelle;
	
	/**
	 * Budget alloué à la dépense
	 * @var float
	 */
	private $_bugdet;
	
	/**
	 * Fournisseur associé à la dépense
	 * @var string
	 */
	private $_fournisseur;
	
	/**
	 * Action associée a la dépense
	 * @var int
	 */
	private $_id_adc;
	
	/**
	 * Etudiant auteur de la dépense
	 * @var int
	 */
	private $_auteur_depense;
	
	/*Constructeur */
	
	public function __construct()
	{
		$args = func_get_args();
	
		switch(func_num_args())
		{
			case 1 : // juste l'id de l'action.
				$this->set_id($args[0]);
				break;
			case 5 : // LIBELLE_DEPENSE, BUDGET_DEPENSE, FOURNISSEUR_DEPENSE, ID_ADC_DEPENSE, AUTEUR_DEPENSE
				$this->set_libelle($args[0]);
				$this->set_budget($args[1]);
				$this->set_fournisseur($args[2]);
				$this->set_id_adc($args[3]);
				$this->set_auteur_depense($args[4]);
				break;
			default:
				trigger_error('Constructeur de Depense avec ' + func_num_args() + ' non défini.');
				break;
		}
	
	}

	
	/*Methode BDD*/
	public static function getAllDepense($id_adc)
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$don= $bdd->query(
				'SELECT '.ID_DEPENSE.', '.LIBELLE_DEPENSE.', '.BUDGET_DEPENSE.', '.FOURNISSEUR_DEPENSE.', '.AUTEUR_DEPENSE.'
										FROM '.TABLE_DEPENSE.' 
										WHERE '.ID_ADC_DEPENSE.' = '.$id_adc
										);
		$donnees=$don->fetchAll();
		$don->closeCursor();
		$dep = "";
		
		foreach($donnees as $d)
		{
			$dep[] = new Depense($d[LIBELLE_DEPENSE], $d[BUDGET_DEPENSE], $d[FOURNISSEUR_DEPENSE], $id_adc, $d[AUTEUR_DEPENSE]);
		}
		return $dep;
	}
	
	public static function getAllDepenseFromArchive($id_adc)
	{
		// On se connecte  à la BDD
		$bdd = PDO2::getInstance();
		$don= $bdd->query(
				'SELECT '.ID_DEPENSE.', '.LIBELLE_DEPENSE.', '.BUDGET_DEPENSE.', '.FOURNISSEUR_DEPENSE.', '.AUTEUR_DEPENSE.'
										FROM '.TABLE_DEPENSE.'_archive
										WHERE '.ID_ADC_DEPENSE.' = '.$id_adc
		);
		$donnees=$don->fetchAll();
		$don->closeCursor();
		$dep = "";
	
		foreach($donnees as $d)
		{
			$dep[] = new Depense($d[LIBELLE_DEPENSE], $d[BUDGET_DEPENSE], $d[FOURNISSEUR_DEPENSE], $id_adc, $d[AUTEUR_DEPENSE]);
		}
		return $dep;
	}
	
	public function saveOneDepense()
	{
		$bdd = PDO2::getInstance();
		$result= $bdd->exec(
				'INSERT INTO '.TABLE_DEPENSE.' ('.LIBELLE_DEPENSE.', '.BUDGET_DEPENSE.', '.FOURNISSEUR_DEPENSE.', '.ID_ADC_DEPENSE.', '.AUTEUR_DEPENSE.')
				 VALUES ("'.$this->get_libelle().'", "'.$this->get_budget().'", "'.$this->get_fournisseur().'", "'.$this->get_id_adc().'", '.$this->get_auteur_depense().')'
						);
		
		if($result == 0)
			return false;
		else
			return true;
		
	}
	
	public static function delAllDepenseADC($idADC)
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec(
				'DELETE FROM '.TABLE_DEPENSE.
				' WHERE '.ID_ADC_DEPENSE." = ".$idADC
		);
		if($result == 0)
			return false;
		else
			return true;
	}
	
	public static function delDepenseAuteurADC($idADC, $idAuteur)
	{
		$bdd = PDO2::getInstance();
		$result = $bdd->exec(
				'DELETE FROM '.TABLE_DEPENSE.'
				 WHERE '.ID_ADC_DEPENSE.' = '.$idADC.'
				 AND '.AUTEUR_DEPENSE.' = '.$idAuteur
				
		);
		if($result == 0)
			return false;
		else
			return true;
	}
	/*Getters et Setters*/
	
	
	/**
	 * Fonction permettant de récupérer l'identifiant de la dépense
	 * @return int
	 */
	public function get_id()
	{
		return $this->_id;
	}
	
	/**
	 * Fonction permettant de récupérer le libellé de la dépense
	 * @return int
	 */
	public function get_libelle()
	{
		return $this->_libelle;
	}
	
	/**
	 * Fonction permettant de modifier le libellé de la dépense
	 * @param string
	 */
	public function set_libelle($libelle)
	{
		$this->_libelle=$libelle;
	}
	
	/**
	 * Fonction permettant de récupérer le budget de la dépense
	 * @return float
	 */
	public function get_budget()
	{
		return $this->_budget;
	}
	
	/**
	 * Fonction permettant de modifier le budget de la dépense
	 * @param float
	 */
	public function set_budget($budget)
	{
		$this->_budget=$budget;
	}
	
	/**
	 * Fonction permettant de récupérer le fournisseur associé à la dépense
	 * @return string
	 */
	public function get_fournisseur()
	{
		return $this->_fournisseur;
	}
	
	/**
	 * Fonction permettant de modifier le fournisseur associé à la dépense
	 * @param float
	 */
	public function set_fournisseur($fournisseur)
	{
		$this->_fournisseur=$fournisseur;
	}
	
	/**
	 * Fonction permettant de récupérer l'identifiant de l'action associé à la dépense
	 * @return int
	 */
	public function get_id_adc()
	{
		return $this->_id_adc;
	}
	
	/**
	 * Fonction permettant de modifier l'action associé à la dépense
	 * @param int
	 */
	public function set_id_adc($adc)
	{
		$this->_id_adc=$adc;
	}
	
	/**
	 * Fonction permettant de récupérer l'étudiant auteur de la dépense.
	 * @access public
	 * @return Etudiants
	 */
	public function get_etudiant()
	{
		$e = new Etudiants($this->get_auteur_depense());
		$e->getOneEtudiant();
		return $e;
	}
	
	
	/**
	 * Fonction permettant de récupérer l'étudiant auteur de la dépense
	 * @return int
	 */
	public function get_auteur_depense()
	{
		return $this->_auteur_depense;
	}
	
	/**
	 * Fonction permettant de modifier l'étudiant auteur de la dépense
	 * @param int
	 */
	public function set_auteur_depense($auteur)
	{
		$this->_auteur_depense=$auteur;
	}
	
	
}
	
	
?>